-
Notifications
You must be signed in to change notification settings - Fork 16
crypto/noise: Show peerIDs that fail to decode #392
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Squashed commit of the following: commit b2ad17b Merge: a6a3521 276b190 Author: Alexandru Vasile <60601340+lexnv@users.noreply.github.com> Date: Fri May 23 12:35:26 2025 +0300 Merge branch 'master' into lexnv/crypto-noise-err commit a6a3521 Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Fri May 23 08:55:11 2025 +0000 tests: Fix build warnings Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> commit e0f9040 Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Fri May 23 08:50:21 2025 +0000 crypto/noise: Add transport type websocket to tests Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> commit a1978f6 Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Thu May 22 16:06:08 2025 +0000 crypto/noise: Enhance all logs with connection type and peerID Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> commit 74ee607 Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Thu May 22 15:54:05 2025 +0000 crypto/noise: Add packet info to warnings Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> commit 43cb2db Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Wed May 14 13:23:44 2025 +0000 crypto/noise: Add peerID to both failures Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> commit 3bd9085 Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Wed May 14 13:13:54 2025 +0000 crypto/noise: Add extra debug messages Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> commit ca2919a Author: Alexandru Vasile <alexandru.vasile@parity.io> Date: Wed May 14 13:12:17 2025 +0000 crypto/noise: Show peerIDs that fail to decode Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io> Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO this should be a temporary fix in a custom branch if this is needed for debugging. We shouldn't print raw data from the remote if it's malformed/malicious
This should only print internal counters and lengths (like expected frame size and buffer length received over the wire, which already happened for trace logs). Ideally, the errors coming from this component should go away once Kusama updates to the upcoming release I'll expect the following error to pop up in the meanwhile. I'd still like to see if we get different types of errors (edge-cases we might have missed), other than:
|
## [0.9.5] - 2025-05-26 This release primarily focuses on strengthening the stability of the websocket transport. We've resolved an issue where higher-level buffering was causing the Noise protocol to fail when decoding messages. We've also significantly improved connectivity between litep2p and Smoldot (the Substrate-based light client). Empty frames are now handled correctly, preventing handshake timeouts and ensuring smoother communication. Finally, we've carried out several dependency updates to keep the library current with the latest versions of its underlying components. ### Fixed - substream/fix: Allow empty payloads with 0-length frame ([#395](#395)) - websocket: Fix connection stability on decrypt messages ([#393](#393)) ### Changed - crypto/noise: Show peerIDs that fail to decode ([#392](#392)) - cargo: Bump yamux to 0.13.5 and tokio to 1.45.0 ([#396](#396)) - ci: Enforce and apply clippy rules ([#388](#388)) - build(deps): bump ring from 0.16.20 to 0.17.14 ([#389](#389)) - Update hickory-resolver 0.24.2 -> 0.25.2 ([#386](#386)) cc @paritytech/networking --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
# Litep2p Becomes the Default Network Backend This PR finalizes the [litep2p](https://github.com/paritytech/litep2p) integration and makes it the default network backend for substrate-based chains. ## Litep2p Improvements After the stabilization, a forum post will follow with up to date information and more accurate measurements of the live impact of litep2p. ### CPU Usage Reduction **Litep2p consumes roughly 2x less CPU than the libp2p alternative**. This frees up resources for other usecases (subsystems) and enables running nodes on more cost-efficient hardware. This metric has been collected by the `networking::libp2p-node` metric of a live Kusama validator. This represents the CPU time spent on polling the networking task. Litep2p CPU consumption is on the left, using roughtly 1.3x CPUs, while libp2p on the right uses roughly 2.9-3x CPUs:  This metric has been collected by the NodeExporter of a live Kusama validator. Litep2p CPU consumption is on the left, using roughtly 230 CPU units, while libp2p on the right uses roughly 350 CPU units. This makes litep2p ~1.52 times more effiecient:  ### DHT Improvements and Authority Discovery Litep2p is able to discover peers faster via the Kademlia protocol than libp2p. This behavior manifests in faster discovery times for validators. For context, libp2p discovers 1K DHT records (authority records) in approximately 10 minutes, while litep2p discovers them in just 2.5 minutes (for more info see #7077 (comment)). This will improve issues we've seen with libp2p that causes validators to not receive rewards: - #8548 ### Stable Sync Peers Litep2p presents a more stable peer count in comparison with the libp2p backend. This ensures we can sync up faster than libp2p to the tip of the chain. In an older experiment, litep2p syncs to the tip of the chain in 526s, compared to 803s for libp2p. The stability of connections shows improvements for other protocols as well:  The previous image shows on the left the litep2p version and on the right the libp2p version. ### Revert Kusama Enablement This PR reverts #7866. Litep2p is now enabled by default, we don't need to selectively enable it on different chains. ### Litep2p 0.9.5 This release primarily focuses on strengthening the stability of the websocket transport. We've resolved an issue where higher-level buffering was causing the Noise protocol to fail when decoding messages. We've also significantly improved connectivity between litep2p and Smoldot (the Substrate-based light client). Empty frames are now handled correctly, preventing handshake timeouts and ensuring smoother communication. Finally, we've carried out several dependency updates to keep the library current with the latest versions of its underlying components. Fixed: - substream/fix: Allow empty payloads with 0-length frame ([#395](paritytech/litep2p#395)) - websocket: Fix connection stability on decrypt messages ([#393](paritytech/litep2p#393)) Changed: - crypto/noise: Show peerIDs that fail to decode ([#392](paritytech/litep2p#392)) - cargo: Bump yamux to 0.13.5 and tokio to 1.45.0 ([#396](paritytech/litep2p#396)) - ci: Enforce and apply clippy rules ([#388](paritytech/litep2p#388)) - build(deps): bump ring from 0.16.20 to 0.17.14 ([#389](paritytech/litep2p#389)) - Update hickory-resolver 0.24.2 -> 0.25.2 ([#386](paritytech/litep2p#386)) ### Fix peerset reserve only mode This has been move in PR: #8650 for ease of reviewing. The PR rejects non-reserved peers in the reserved-only mode of the litep2p notification peerset. --------- Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This PR enriches the errors coming from the crypto/noise decryption by providing peer IDs.
This is useful for debugging: